home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 52 / Amiga Format AFCD52 (Issue 136, May 2000).iso / -screenplay- / shareware / warpquake / warpquakesrc / quakedef.h < prev    next >
C/C++ Source or Header  |  2000-02-29  |  8KB  |  336 lines

  1. /*
  2. Copyright (C) 1996-1997 Id Software, Inc.
  3.  
  4. This program is free software; you can redistribute it and/or
  5. modify it under the terms of the GNU General Public License
  6. as published by the Free Software Foundation; either version 2
  7. of the License, or (at your option) any later version.
  8.  
  9. This program is distributed in the hope that it will be useful,
  10. but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
  12.  
  13. See the GNU General Public License for more details.
  14.  
  15. You should have received a copy of the GNU General Public License
  16. along with this program; if not, write to the Free Software
  17. Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  18.  
  19. */
  20. // quakedef.h -- primary header for client
  21.  
  22. //#define    GLTEST            // experimental stuff
  23.  
  24. #define    QUAKE_GAME            // as opposed to utilities
  25.  
  26. #define    VERSION                1.09
  27. #define    GLQUAKE_VERSION        1.00
  28. #define    D3DQUAKE_VERSION    0.01
  29. #define    WINQUAKE_VERSION    0.996
  30. #define    LINUX_VERSION        1.30
  31. #define    X11_VERSION            1.10
  32.  
  33. //define    PARANOID            // speed sapping error checking
  34.  
  35. #ifdef QUAKE2
  36. #define    GAMENAME    "id1"        // directory to look in by default
  37. #else
  38. #define    GAMENAME    "id1"
  39. #endif
  40.  
  41. #include <math.h>
  42. #include <string.h>
  43. #include <stdarg.h>
  44. #include <stdio.h>
  45. #include <stdlib.h>
  46. #include <setjmp.h>
  47.  
  48. #if defined(_WIN32) && !defined(WINDED)
  49.  
  50. #if defined(_M_IX86)
  51. #define __i386__    1
  52. #endif
  53.  
  54. void    VID_LockBuffer (void);
  55. void    VID_UnlockBuffer (void);
  56.  
  57. #else
  58.  
  59. #define    VID_LockBuffer()
  60. #define    VID_UnlockBuffer()
  61.  
  62. #endif
  63.  
  64. #if defined __i386__ // && !defined __sun__
  65. #define id386    1
  66. #else
  67. #define id386    0
  68. #endif
  69.  
  70. #if id386
  71. #define UNALIGNED_OK    1    // set to 0 if unaligned accesses are not supported
  72. #else
  73. #define UNALIGNED_OK    0
  74. #endif
  75.  
  76. // !!! if this is changed, it must be changed in d_ifacea.h too !!!
  77. #define CACHE_SIZE    32        // used to align key data structures
  78.  
  79. #define UNUSED(x)    (x = x)    // for pesky compiler / lint warnings
  80.  
  81. #define    MINIMUM_MEMORY            0x550000
  82. #define    MINIMUM_MEMORY_LEVELPAK    (MINIMUM_MEMORY + 0x100000)
  83.  
  84. #define MAX_NUM_ARGVS    50
  85.  
  86. // up / down
  87. #define    PITCH    0
  88.  
  89. // left / right
  90. #define    YAW        1
  91.  
  92. // fall over
  93. #define    ROLL    2
  94.  
  95.  
  96. #define    MAX_QPATH        64            // max length of a quake game pathname
  97. #define    MAX_OSPATH        128            // max length of a filesystem pathname
  98.  
  99. #define    ON_EPSILON        0.1            // point on plane side epsilon
  100.  
  101. #define    MAX_MSGLEN        8000        // max length of a reliable message
  102. #define    MAX_DATAGRAM    1024        // max length of unreliable message
  103.  
  104. //
  105. // per-level limits
  106. //
  107. #define    MAX_EDICTS        600            // FIXME: ouch! ouch! ouch!
  108. #define    MAX_LIGHTSTYLES    64
  109. #define    MAX_MODELS        256            // these are sent over the net as bytes
  110. #define    MAX_SOUNDS        256            // so they cannot be blindly increased
  111.  
  112. #define    SAVEGAME_COMMENT_LENGTH    39
  113.  
  114. #define    MAX_STYLESTRING    64
  115.  
  116. //
  117. // stats are integers communicated to the client by the server
  118. //
  119. #define    MAX_CL_STATS        32
  120. #define    STAT_HEALTH            0
  121. #define    STAT_FRAGS            1
  122. #define    STAT_WEAPON            2
  123. #define    STAT_AMMO            3
  124. #define    STAT_ARMOR            4
  125. #define    STAT_WEAPONFRAME    5
  126. #define    STAT_SHELLS            6
  127. #define    STAT_NAILS            7
  128. #define    STAT_ROCKETS        8
  129. #define    STAT_CELLS            9
  130. #define    STAT_ACTIVEWEAPON    10
  131. #define    STAT_TOTALSECRETS    11
  132. #define    STAT_TOTALMONSTERS    12
  133. #define    STAT_SECRETS        13        // bumped on client side by svc_foundsecret
  134. #define    STAT_MONSTERS        14        // bumped by svc_killedmonster
  135.  
  136. // stock defines
  137.  
  138. #define    IT_SHOTGUN                1
  139. #define    IT_SUPER_SHOTGUN        2
  140. #define    IT_NAILGUN                4
  141. #define    IT_SUPER_NAILGUN        8
  142. #define    IT_GRENADE_LAUNCHER        16
  143. #define    IT_ROCKET_LAUNCHER        32
  144. #define    IT_LIGHTNING            64
  145. #define IT_SUPER_LIGHTNING      128
  146. #define IT_SHELLS               256
  147. #define IT_NAILS                512
  148. #define IT_ROCKETS              1024
  149. #define IT_CELLS                2048
  150. #define IT_AXE                  4096
  151. #define IT_ARMOR1               8192
  152. #define IT_ARMOR2               16384
  153. #define IT_ARMOR3               32768
  154. #define IT_SUPERHEALTH          65536
  155. #define IT_KEY1                 131072
  156. #define IT_KEY2                 262144
  157. #define    IT_INVISIBILITY            524288
  158. #define    IT_INVULNERABILITY        1048576
  159. #define    IT_SUIT                    2097152
  160. #define    IT_QUAD                    4194304
  161. #define IT_SIGIL1               (1<<28)
  162. #define IT_SIGIL2               (1<<29)
  163. #define IT_SIGIL3               (1<<30)
  164. #define IT_SIGIL4               (1<<31)
  165.  
  166. //===========================================
  167. //rogue changed and added defines
  168.  
  169. #define RIT_SHELLS              128
  170. #define RIT_NAILS               256
  171. #define RIT_ROCKETS             512
  172. #define RIT_CELLS               1024
  173. #define RIT_AXE                 2048
  174. #define RIT_LAVA_NAILGUN        4096
  175. #define RIT_LAVA_SUPER_NAILGUN  8192
  176. #define RIT_MULTI_GRENADE       16384
  177. #define RIT_MULTI_ROCKET        32768
  178. #define RIT_PLASMA_GUN          65536
  179. #define RIT_ARMOR1              8388608
  180. #define RIT_ARMOR2              16777216
  181. #define RIT_ARMOR3              33554432
  182. #define RIT_LAVA_NAILS          67108864
  183. #define RIT_PLASMA_AMMO         134217728
  184. #define RIT_MULTI_ROCKETS       268435456
  185. #define RIT_SHIELD              536870912
  186. #define RIT_ANTIGRAV            1073741824
  187. #define RIT_SUPERHEALTH         2147483648
  188.  
  189. //MED 01/04/97 added hipnotic defines
  190. //===========================================
  191. //hipnotic added defines
  192. #define HIT_PROXIMITY_GUN_BIT 16
  193. #define HIT_MJOLNIR_BIT       7
  194. #define HIT_LASER_CANNON_BIT  23
  195. #define HIT_PROXIMITY_GUN   (1<<HIT_PROXIMITY_GUN_BIT)
  196. #define HIT_MJOLNIR         (1<<HIT_MJOLNIR_BIT)
  197. #define HIT_LASER_CANNON    (1<<HIT_LASER_CANNON_BIT)
  198. #define HIT_WETSUIT         (1<<(23+2))
  199. #define HIT_EMPATHY_SHIELDS (1<<(23+3))
  200.  
  201. //===========================================
  202.  
  203. #define    MAX_SCOREBOARD        16
  204. #define    MAX_SCOREBOARDNAME    32
  205.  
  206. #define    SOUND_CHANNELS        8
  207.  
  208. // This makes anyone on id's net privileged
  209. // Use for multiplayer testing only - VERY dangerous!!!
  210. // #define IDGODS
  211.  
  212. #include "common.h"
  213. #include "bspfile.h"
  214. #include "vid.h"
  215. #include "sys.h"
  216. #include "zone.h"
  217. #include "mathlib.h"
  218.  
  219. typedef struct
  220. {
  221.     vec3_t    origin;
  222.     vec3_t    angles;
  223.     int        modelindex;
  224.     int        frame;
  225.     int        colormap;
  226.     int        skin;
  227.     int        effects;
  228. } entity_state_t;
  229.  
  230.  
  231. #include "wad.h"
  232. #include "draw.h"
  233. #include "cvar.h"
  234. #include "screen.h"
  235. #include "net.h"
  236. #include "protocol.h"
  237. #include "cmd.h"
  238. #include "sbar.h"
  239. #include "sound.h"
  240. #include "render.h"
  241. #include "client.h"
  242. #include "progs.h"
  243. #include "server.h"
  244.  
  245. #ifdef GLQUAKE
  246. #include "gl_model.h"
  247. #else
  248. #include "model.h"
  249. #include "d_iface.h"
  250. #endif
  251.  
  252. #include "input.h"
  253. #include "world.h"
  254. #include "keys.h"
  255. #include "console.h"
  256. #include "view.h"
  257. #include "menu.h"
  258. #include "crc.h"
  259. #include "cdaudio.h"
  260.  
  261. #ifdef GLQUAKE
  262. #include "glquake.h"
  263. #endif
  264.  
  265. //=============================================================================
  266.  
  267. // the host system specifies the base of the directory tree, the
  268. // command line parms passed to the program, and the amount of memory
  269. // available for the program to use
  270.  
  271. typedef struct
  272. {
  273.     char    *basedir;
  274.     char    *cachedir;        // for development over ISDN lines
  275.     int        argc;
  276.     char    **argv;
  277.     void    *membase;
  278.     int        memsize;
  279. } quakeparms_t;
  280.  
  281.  
  282. //=============================================================================
  283.  
  284.  
  285.  
  286. extern qboolean noclip_anglehack;
  287.  
  288.  
  289. //
  290. // host
  291. //
  292. extern    quakeparms_t host_parms;
  293.  
  294. extern    cvar_t        sys_ticrate;
  295. extern    cvar_t        sys_nostdout;
  296. extern    cvar_t        developer;
  297.  
  298. extern    qboolean    host_initialized;        // true if into command execution
  299. extern    double        host_frametime;
  300. extern    byte        *host_basepal;
  301. extern    byte        *host_colormap;
  302. extern    int            host_framecount;    // incremented every frame, never reset
  303. extern    double        realtime;            // not bounded in any way, changed at
  304.                                         // start of every frame, never reset
  305.  
  306. void Host_ClearMemory (void);
  307. void Host_ServerFrame (void);
  308. void Host_InitCommands (void);
  309. void Host_Init (quakeparms_t *parms);
  310. void Host_Shutdown(void);
  311. void Host_Error (char *error, ...);
  312. void Host_EndGame (char *message, ...);
  313. void Host_Frame (float time);
  314. void Host_Quit_f (void);
  315. void Host_ClientCommands (char *fmt, ...);
  316. void Host_ShutdownServer (qboolean crash);
  317.  
  318. extern qboolean        msg_suppress_1;        // suppresses resolution and cache size console output
  319.                                         //  an fullscreen DIB focus gain/loss
  320. extern int            current_skill;        // skill level for currently loaded level (in case
  321.                                         //  the user changes the cvar while the level is
  322.                                         //  running, this reflects the level actually in use)
  323.  
  324. extern qboolean        isDedicated;
  325.  
  326. extern int            minimum_memory;
  327.  
  328. //
  329. // chase
  330. //
  331. extern    cvar_t    chase_active;
  332.  
  333. void Chase_Init (void);
  334. void Chase_Reset (void);
  335. void Chase_Update (void);
  336.